home *** CD-ROM | disk | FTP | other *** search
- '**************************************************************************
- '* setup script for POWERdraft for AutoCAD R13 (Win32s & NT)
- '**************************************************************************
- '*
- '* REV:
- '* 09.01.95, mk: stolen from POWERdraft R12/Win :-)
- '* 19.01.95, mk: added the naming scheme for the new Windows drivers
- '* 13.03.95, mk: installation of PD12 _and_ PD13 on one machine didn't work
-
- '$DEFINE DEBUG ''Define for script development/debugging
-
- '$INCLUDE 'setupapi.inc'
- '$INCLUDE 'msdetect.inc'
-
- ''Dialog ID's
- CONST LANGUAGE = 50
- CONST WELCOME = 100
- CONST ASKQUIT = 200
- CONST ACADPATH = 300
- CONST DESTPATH = 350
- CONST EXITFAILURE = 400
- CONST EXITQUIT = 600
- CONST EXITOK = 700
- CONST DRVHELP = 900
-
- CONST EXITFAILNOWIN32 = 1100
- CONST EXITFAILNOTWIN31 = 1200
- CONST EXITFAILNOTELSA = 1500
- CONST EXITFAILOLDDRV31 = 1550
- CONST EXITFAILOLDDRV95 = 1560
- CONST EXITFAILOLDDRVNT = 1570
- CONST WILLBREAKOLD = 1600
- CONST WILLBREAKNEW = 1650
-
- CONST BADPATH = 6400
-
- ''Bitmap ID
- CONST LOGO = 1
-
- CONST DRIVERFAMILY = "POWERdraft for AutoCAD"
- CONST DRIVERKEY = "WinADIR13"
- CONST DRIVERNAME = "POWERdraft for AutoCAD R13"
- CONST MINDRVVER31 = "5.20" '' remember to update dialog EXITFAILOLDDRV31!
- CONST MINDRVVER95 = "1.04.002" '' remember to update dialog EXITFAILOLDDRV95!
- CONST MINDRVVERNT = "3.59.00.00" '' remember to update dialog EXITFAILOLDDRVNT!
-
- GLOBAL CUIDLL$ ''name of custom user interface DLL
- GLOBAL DEST$ ''Default destination directory.
- GLOBAL DESTACAD$ ''ACAD's home directory.
- GLOBAL DESTWIN$ ''Windows directory.
- GLOBAL DESTSYS$ ''Windows\System directory.
- GLOBAL LANG% ''language code, is added to every dialog ID
- GLOBAL IsWindowsNT% ''We are executed in NT
- GLOBAL ExitCode% ''global error code
-
- DECLARE SUB Install
- DECLARE SUB UpdateELSADisp
- DECLARE SUB UpdateSystemIni
- DECLARE SUB RebootSystem
- DECLARE FUNCTION NeedELSADisp AS INTEGER
- DECLARE FUNCTION NeedNewWin32s AS INTEGER
- DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
- DECLARE FUNCTION OnWindows95 AS INTEGER
- DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
- DECLARE FUNCTION IsWin32sLoaded LIB "INIUPD.DLL" (arg1$) AS INTEGER
-
- DECLARE FUNCTION GlobalFindAtom LIB "USER" (arg1$) AS INTEGER
-
-
- INIT:
-
- ''dummy% = DoMsgBox("MK's MessageBox template", "DEBUG", MB_OK+MB_TASKMODAL+MB_ICONHAND)
-
- CUIDLL$ = "mscuistf.dll" ''Custom user interface dll
- HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure
- IsWindowsNT% = 0
- ExitCode% = EXITFAILURE
- ON ERROR GOTO ERRNORMAL
-
- '' build a global list of ELSA system components used by this driver
- AddListItem "USES", "DRWh"
- AddListItem "USES", "DL32h"
-
- SrcDir$ = GetSymbolValue("STF_SRCDIR")
-
- SetBitmap CUIDLL$, LOGO
- SetTitle DRIVERFAMILY
-
- szInf$ = GetSymbolValue("STF_SRCINFPATH")
- IF szInf$ = "" THEN
- szInf$ = GetSymbolValue("STF_CWDDIR") + "PD13.INF"
- END IF
- ReadInfFile szInf$
-
- LANG% = 0
- DEST$ = "C:\WINNER\WINADI\"
- DESTWIN$ = GetWindowsDir()
- DESTSYS$ = GetWindowsSysDir()
-
- '$IFDEF DEBUG
- i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal
- WinDrive$ = MID$(GetWindowsDir, 1, 1)
- IF IsDriveValid(WinDrive$) = 0 THEN
- i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
- GOTO QUIT
- END IF
- '$ENDIF ''DEBUG
-
-
- LANGUAGE:
- langstr$ = STR$(LANG% + 1)
- SetSymbolValue "RadioDefault", langstr$
- LANGL1:
- sz$ = UIStartDlg(CUIDLL$, LANGUAGE, "FRadioDlgProc", 0, "")
- langstr$ = GetSymbolValue("ButtonChecked")
- LANG% = VAL(LANGSTR$) - 1
-
- IF sz$ = "CONTINUE" THEN
- UIPop(1)
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO LANGL1
- ELSE
- GOSUB ASKQUIT
- GOTO LANGUAGE
- END IF
-
-
- WELCOME:
- sz$ = UIStartDlg(CUIDLL$, WELCOME+LANG%, "FInfoDlgProc", DRVHELP+LANG%, HELPPROC$)
- IF sz$ = "CONTINUE" THEN
- UIPop 1
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO WELCOME
- ELSEIF sz$ = "BACK" THEN
- UIPop 1
- GOTO LANGUAGE
- ELSE
- GOSUB ASKQUIT
- GOTO WELCOME
- END IF
-
- CHECK:
- IF OnWindowsNT() THEN
- DESTSYS$ = DESTWIN$ + "system32"
- IF MID$(DESTSYS$, LEN(DESTSYS$), 1) <> "\" THEN
- DESTSYS$ = DESTSYS$ + "\"
- END IF
- IsWindowsNT% = 1
- GOTO CHECKDRIVER
- END IF
- IF GetWindowsMajorVersion < 3 THEN
- ExitCode% = EXITFAILNOTWIN31
- GOTO QUIT
- END IF
- IF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion < 1 THEN
- ExitCode% = EXITFAILNOTWIN31
- GOTO QUIT
- END IF
- IF GetWindowsMajorVersion >= 4 THEN
- ExitCode% = EXITFAILNOTWIN31
- GOTO QUIT
- END IF
- '' If Win32s is already installed, get running version number
- IF DoesFileExist(DESTSYS$ + "W32SYS.DLL", femExists) THEN
- szOldVer$ ="1.00.000 " ''Reserve space in string for version
- i% = IsWin32sLoaded( szOldVer$ )
- IF i% = 0 THEN
- ExitCode% = EXITFAILNOWIN32
- GOTO QUIT
- END IF
- END IF
-
- CHECKDRIVER:
- IF GlobalFindAtom( "ELSA_Driver" ) = 0 THEN
- ExitCode% = EXITFAILOLDDRVNT
- GOTO QUIT
- END IF
- GOTO CHECKDONE
-
- ''!!mb: here the display driver version should be checked !!!!
-
- CHECKDONE:
-
- '' try to find AutoCAD, if it fails keep string empty
- '' typical entry in WIN.INI is:
- '' [Extensions]
- '' dwg=D:\ACAD\R12C1WUS\acad.exe ^.dwg
- '' or
- '' dwg=D:\ACAD\LTWIN\aclt.exe ^.dwg
- DESTACAD$ = UCASE$( GetIniKeyString( "WIN.INI", "Extensions", "dwg" ) )
- IF INSTR( DESTACAD$, "\ACAD.EXE" ) <> 0 THEN
- DESTACAD$ = MID$( DESTACAD$, 1, INSTR( DESTACAD$, "\ACAD.EXE" ) )
- ELSE
- DESTACAD$ = ""
- END IF
-
- GETACAD:
- SetSymbolValue "EditTextIn", DESTACAD$
- SetSymbolValue "EditFocus", "END"
- GETACADL1:
- sz$ = UIStartDlg(CUIDLL$, ACADPATH+LANG%, "FEditDlgProc", DRVHELP+LANG%, HELPPROC$)
- DESTACAD$ = LTRIM$(RTRIM$(UCASE$( GetSymbolValue("EditTextOut") )))
- IF sz$ = "CONTINUE" THEN
- IF DESTACAD$ = "" THEN
- GOSUB BADPATH
- GOTO GETACADL1
- END IF
- IF MID$(DESTACAD$, LEN(DESTACAD$), 1) <> "\" THEN
- DESTACAD$ = DESTACAD$ + "\"
- END IF
- IF DoesDirExist(DESTACAD$) = 0 THEN
- GOSUB BADPATH
- GOTO GETACADL1
- END IF
- IF DoesFileExist(DESTACAD$+"ACAD.EXE",femExist)=0 AND DoesFileExist(DESTACAD$+"ACAD.INI",femExist)=0 THEN
- GOSUB BADPATH
- GOTO GETACADL1
- END IF
- '' R12 has a ACAD.DLL
- IF DoesFileExist( DESTACAD$ + "ACAD.DLL", femExist ) THEN
- GOSUB BADPATH
- GOTO GETACADL1
- END IF
- UIPop 1
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO GETACADL1
- ELSEIF sz$ = "BACK" THEN
- UIPop 1
- GOTO WELCOME
- ELSE
- GOSUB ASKQUIT
- GOTO GETACAD
- END IF
-
-
- GETPATH:
- SetSymbolValue "EditTextIn", DEST$
- SetSymbolValue "EditFocus", "END"
- GETPATHL1:
- sz$ = UIStartDlg(CUIDLL$, DESTPATH+LANG%, "FEditDlgProc", DRVHELP+LANG%, HELPPROC$)
- DEST$ = LTRIM$(RTRIM$(UCASE$( GetSymbolValue("EditTextOut") )))
- IF sz$ = "CONTINUE" THEN
- IF DEST$ = "" THEN
- GOSUB BADPATH
- GOTO GETPATHL1
- END IF
- IF MID$(DEST$, LEN(DEST$), 1) <> "\" THEN
- DEST$ = DEST$ + "\"
- END IF
- IF IsDirWritable(DEST$) = 0 THEN
- GOSUB BADPATH
- GOTO GETPATHL1
- END IF
- UIPop 1
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO GETPATHL1
- ELSEIF sz$ = "BACK" THEN
- UIPop 1
- GOTO GETACAD
- ELSE
- GOSUB ASKQUIT
- GOTO GETPATH
- END IF
-
- CHECKDISP:
- IF NeedELSADisp() = -1 THEN
- ExitCode% = EXITQUIT
- GOTO QUIT
- END IF
-
-
- DOINSTALL:
- Install
-
-
- QUIT:
- ON ERROR GOTO ERRQUIT
-
- IF ERR = 0 THEN
- dlg% = ExitCode%
- ELSEIF ERR = STFQUIT THEN
- dlg% = EXITQUIT
- ExitCode% = EXITQUIT
- ELSE
- i% = DoMsgBox("Internal error: "+ERROR$ +" ("+STR$(ERR)+") in line "+STR$(ERL), "Runtime error", MB_OK+MB_TASKMODAL+MB_ICONINFORMATION)
- dlg% = EXITFAILURE
- ExitCode% = EXITQUIT
- END IF
- QUITL1:
- sz$ = UIStartDlg(CUIDLL$, dlg%+LANG%, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO QUITL1
- END IF
- UIPop 1
-
- END
-
-
- '*****************************************************************************
-
-
- ERRQUIT:
- i% = DoMsgBox("Setup sources were corrupted, call your dealer!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
- END
-
-
- '' Bypass run-time errors. Let final dialog box display fatal error message.
- ERRNORMAL:
- '' Check if user cancelled setup
- IF ERR = STFQUIT THEN
- GOTO QUIT
- END IF
- RESUME NEXT
-
-
- BADPATH:
- sz$ = UIStartDlg(CUIDLL$, BADPATH+LANG%, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO BADPATH
- END IF
- UIPop 1
- RETURN
-
-
- ASKQUIT:
- sz$ = UIStartDlg(CUIDLL$, ASKQUIT+LANG%, "FQuitDlgProc", 0, "")
-
- IF sz$ = "EXIT" THEN
- UIPopAll
- ERROR STFQUIT
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO ASKQUIT
- ELSE
- UIPop 1
- END IF
- RETURN
-
-
-
- '**
- '** Purpose:
- '** Builds the copy list and performs all installation operations.
- '** Arguments:
- '** none.
- '** Returns:
- '** none.
- '*************************************************************************
- SUB Install STATIC
-
- ExitCode% = EXITFAILURE
-
- SrcDir$ = GetSymbolValue("STF_SRCDIR")
-
- '' let's start with POWERdraft files
- CreateDir DEST$, cmoNone
-
- OpenLogFile DEST$ + "PD13.LOG", 0
- WriteToLogFile ""
- WriteToLogFile " Source directory: '" + SrcDir$ + "'"
- WriteToLogFile " Destination directory: '" + DEST$ + "'"
- WriteToLogFile " AutoCAD directory: '" + DESTACAD$ + "'"
- WriteToLogFile " Windows directory: '" + DESTWIN$ + "'"
- WriteToLogFile " Windows sys directory: '" + DESTSYS$ + "'"
- WriteToLogFile ""
-
- '' Gimme a second, need to clean up a problem of early SETUPs
- IF IsWindowsNT% = 0 THEN
- WriteToLogFile "'' fix wrong installation of early SETUP versions"
- FOR i%=1 TO GetListLength("USES") STEP 1
- Component$ = GetListItem( "USES", i% )
- MakeListFromSectionFilename "MOVEFILES", Component$
- FOR j%=1 TO GetListLength("MOVEFILES") STEP 1
- szFile$ = GetListItem( "MOVEFILES", j% )
- IF DoesFileExist(DESTSYS$ + szFile$,femExist) THEN
- CopyFile DESTSYS$ + szFile$, DESTWIN$ + szFile$, cmoNone,0
- RemoveFile DESTSYS$ + szFile$, cmoNone
- END IF
- NEXT j%
- RemoveSymbol "MOVEFILES"
- NEXT i%
- END IF
-
- AddSectionFilesToCopyList DRIVERKEY, SrcDir$, DEST$
-
- FOR i%=1 TO GetListLength("USES") STEP 1
- Component$ = GetListItem( "USES", i% )
- IF IsWindowsNT% = 1 THEN
- AddSectionFilesToCopyList Component$, SrcDir$, DESTSYS$
- ELSE
- '' in Win3.1 DESTWIN$ is the local directory,
- '' DESTSYS$ might be on the network
- AddSectionFilesToCopyList Component$, SrcDir$, DESTWIN$
- END IF
- NEXT i%
-
- '' next line is a debugging aid:
- '' DumpCopyList DEST$ + "PD13.LST"
- CopyFilesInCopyList
- IF ERR <> 0 THEN
- EXIT SUB
- END IF
-
-
- '' if copy succeeded, do all INI changes, first for POWERdraft ...
- ini$ = DESTWIN$ + "DSELSA13.INI"
- CreateIniKeyValue ini$, "POWERdraft", "Cockpit", "1", cmoNone
-
- '' maintain our ELSADISP.INI
- UpdateELSADisp
-
- IF DESTACAD$ <> "" THEN
- ini$ = MakePath(DESTACAD$, "ACAD.INI")
- acadsect$ = "General"
-
- '' append destination path to AutoCAD's key ACADDRV in ACAD.INI
- acaddrv$ = UCASE$( GetIniKeyString( ini$, acadsect$, "ACADDRV" ) )
- '' this is to fix a bug in R13 initial version, they do not include
- '' .\DRV in ACADDRV - no idea how they find the drivers anyway -
- '' at least when we add our dir, the drivers in .\DRV are inaccessible
- IF INSTR( acaddrv$, ";" ) = 0 THEN
- acaddrv$ = acaddrv$ + ";" + DESTACAD$
- END IF
- IF INSTR( acaddrv$, DEST$ ) = 0 THEN
- acaddrv$ = acaddrv$ + ";" + DEST$
- END IF
- CreateIniKeyValue ini$, acadsect$, "ACADDRV", acaddrv$, cmoOverwrite
-
- '' We do not support Autodesk's aerial view, so turn it off!
- CreateIniKeyValue ini$, "Aerial View", "Enabled", "0", cmoOverwrite
-
- ''!! FIXME: replace _DSVIEWER with SUPERVIEW, add some icons?
- IF GetIniKeyString( ini$, acadsect$, "ToolBar1" ) = "" THEN
-
- ' they have a built in default of 17 buttons
- ''!! CreateIniKeyValue ini$, acadsect$, "ToolBar18", "'Cockpit #C", cmoOverwrite
- ''!! CreateIniKeyValue ini$, acadsect$, "ToolBar19", "'MagniView #M", cmoOverwrite
-
- ELSE
-
- ' user already changed buttons that made ACAD write list to ini file
- FOR i%=1 TO 26 STEP 1
- tb_key$ = "ToolBar" + LTRIM$(RTRIM$( STR$(i) ))
- tb_val$ = UCASE$( GetIniKeyString( ini$, acadsect$, tb_key$ ) )
- IF INSTR( tb_val$, "COCKPIT" ) THEN
- EXIT FOR
- END IF
- IF tb_val$ = "" THEN
- CreateIniKeyValue ini$, acadsect$, tb_key$, "'Cockpit #C", cmoOverwrite
- EXIT FOR
- END IF
- NEXT i%
- FOR i%=1 TO 26 STEP 1
- tb_key$ = "ToolBar" + LTRIM$(RTRIM$( STR$(i) ))
- tb_val$ = UCASE$( GetIniKeyString( ini$, acadsect$, tb_key$ ) )
- IF INSTR( tb_val$, "MAGNIVIEW" ) THEN
- EXIT FOR
- END IF
- IF tb_val$ = "" THEN
- CreateIniKeyValue ini$, acadsect$, tb_key$, "'MagniView #M", cmoOverwrite
- EXIT FOR
- END IF
- NEXT i%
-
- END IF
-
- '' modify AutoCAD's menu file, but keep a copy!
- ''!! IF DoesFileExist(DESTACAD$ + "acad_o.mnu",femExists) = 0 THEN
- ''!! RenameFile DESTACAD$ + "acad.mnu", "acad_o.mnu"
- ''!! ELSE
- ''!! CopyFile DESTACAD$ + "acad.mnu", DESTACAD$ + "acad_o.mnu"
- ''!! END IF
- ''!! modify menu file here: DSVIEWER -> SUPERVIEW, +MAGNIVIEW, +COCKPIT
-
- END IF
-
- '' put a help file icon into AutoCAD group in ProgMangler
- IF LANG%=1 THEN
- helpfile$ = DEST$ + "lang13de.hlp"
- ELSE
- helpfile$ = DEST$ + "lang13en.hlp"
- END IF
- CreateProgmanItem "AutoCAD R13", DRIVERNAME, helpfile$, "", cmoOverwrite
-
- ExitCode% = EXITOK
-
- CloseLogFile
-
- END SUB
-
-
- '**
- '** Purpose:
- '** Check versions of our system components and handle compatibility
- '** conflicts
- '** Arguments:
- '** -
- '** Returns:
- '** 0 for no install needed, 1 for install required, -1 for abort
- '*************************************************************************
- FUNCTION NeedELSADisp STATIC AS INTEGER
-
- ReturnValue% = 1
-
- '' we have version numbers of all components in our INI file ELSADISP.INI
- '' use this to check for incompatible updates
- ELSAdisp$ = DESTWIN$ + "ELSADISP.INI"
- IF DoesFileExist(ELSAdisp$,femExist) THEN
- IF DoesFileExist(ELSAdisp$,femReadWrite) = 0 THEN
- i% = DoMsgBox( "ABORT: " + ELSAdisp$ + " is write protected!", "Fatal Error", MB_ICONSTOP+MB_TASKMODAL)
- NeedELSADisp = -1
- EXIT FUNCTION
- END If
- END IF
-
- '' Check versions of system components,
- '' use the file marked "VERCHECK" in each group
- FOR i%=1 TO GetListLength("USES") STEP 1
-
- Component$ = GetListItem( "USES", i% )
- usedby$ = GetIniKeyString( ELSAdisp$, Component$, "UsedBy" )
-
- '' get compatibility levels
- szNewVer$ = GetSectionKeyVersion(Component$,"VERCHECK")
- IF IsWindowsNT% = 1 THEN
- szOldVer$ = GetVersionOfFile( DESTSYS$ + GetSectionKeyFileName(Component$,"VERCHECK") )
- ELSE
- szOldVer$ = GetVersionOfFile( DESTWIN$ + GetSectionKeyFileName(Component$,"VERCHECK") )
- '' Once upon a time we had a broken SETUP ...
- '' that installed to DESTSYS instead of DESTWIN, so look there too,
- '' we will move the files in subroutine Install
- IF szOldVer$ = "" THEN
- szOldVer$ = GetVersionOfFile( DESTSYS$ + GetSectionKeyFileName(Component$,"VERCHECK") )
- END IF
- END IF
- '' can not be incompatible if it is not installed ...
- IF szOldVer$ <> "" THEN
- szNewLev& = GetVersionNthField( szNewVer$, 1 )
- szOldLev& = GetVersionNthField( szOldVer$, 1 )
- '' remember incompatible components in a list
- IF szNewLev& <> szOldLev& THEN
- AddListItem "COMPLEVEL", Component$
- ReturnValue% = 2
- ENDIF
-
- '' build list of broken apps
- FOR j% = 1 TO 999 STEP 1
- app$ = GetNthFieldFromIniString( usedby$, j% )
- IF app$ = "" THEN
- EXIT FOR
- END IF
- AppName$ = GetIniKeyString( ELSAdisp$, app$, "FullName" )
- IF szNewLev& > szOldLev& THEN
- ''add every app only once ...
- IF INSTR(OldApps$,AppName$) = 0 THEN
- ''... and never ourselves
- IF AppName$<>DRIVERNAME THEN
- OldApps$ = OldApps$ + AppName$ + ";"
- END IF
- END IF
- ELSEIF szNewLev& < szOldLev& THEN
- '' oh shit, we are really old!
- IF INSTR( NewApps$, AppName$ ) = 0 THEN
- IF AppName$<>DRIVERNAME THEN
- NewApps$ = NewApps$ + AppName$ + ";"
- END IF
- END IF
- END IF
- NEXT j%
- END IF
-
- NEXT i%
-
- IF OldApps$ <> "" THEN
- BROKENOLD:
- ''convert our string delimited with ";" into a Symbol table list
- RemoveSymbol "ListItemsIn"
- WHILE OldApps$ <> ""
- i% = INSTR( OldApps$, ";" )
- AppName$ = MID$( OldApps$, 1, i%-1 )
- AddListItem "ListItemsIn", AppName$
- OldApps$ = MID$( OldApps$, i%+1 )
- WEND
- sz$ = UIStartDlg(CUIDLL$, WILLBREAKOLD+LANG%, "FListDlgProc", 0, "")
- IF sz$ = "CONTINUE" THEN
- UIPop 1
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO BROKENOLD
- ELSE
- UIPop 1
- ReturnValue% = -1
- END IF
- END IF
- IF NewApps$ <> "" THEN
- BROKENNEW:
- RemoveSymbol "ListItemsIn"
- WHILE NewApps$ <> ""
- i% = INSTR( NewApps$, ";" )
- AppName$ = MID$( NewApps$, 1, i%-1 )
- AddListItem "ListItemsIn", AppName$
- NewApps$ = MID$( NewApps$, i%+1 )
- WEND
- sz$ = UIStartDlg(CUIDLL$, WILLBREAKNEW+LANG%, "FListDlgProc", 0, "")
- IF sz$ = "CONTINUE" THEN
- UIPop 1
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO BROKENNEW
- ELSE
- UIPop 1
- ReturnValue% = -1
- END IF
- END IF
-
- '' If user decided to continue installation (breaking another app)
- '' delete the old system files to make sure they will be copied.
- '' Otherwise the filedate check would not allow to install older files.
- IF ReturnValue% = 2 THEN
- FOR i%=1 TO GetListLength("COMPLEVEL") STEP 1
- Component$ = GetListItem( "COMPLEVEL", i% )
- MakeListFromSectionFilename "COMPFILES", Component$
- FOR j%=1 TO GetListLength("COMPFILES") STEP 1
- IF IsWindowsNT% = 1 THEN
- szFile$ = DESTSYS$ + GetListItem( "COMPFILES", j% )
- ELSE
- szFile$ = DESTWIN$ + GetListItem( "COMPFILES", j% )
- END IF
- IF DoesFileExist(szFile$,femReadWrite) THEN
- RemoveFile szFile$, cmoVital
- END IF
- NEXT j%
- RemoveSymbol "COMPFILES"
- NEXT i%
- RemoveSymbol "COMPLEVEL"
-
- ReturnValue% = 1
- END IF
-
- NeedELSADisp = ReturnValue%
-
- END FUNCTION
-
-
- '**
- '** Purpose:
- '** Create or update ELSADISP.INI, this is where we note cross
- '** dependencies and support detection of version conflicts.
- '** Arguments:
- '** -
- '** Returns:
- '** -
- '*************************************************************************
- SUB UpdateELSADisp STATIC
-
- '' save version numbers of all components to our INI file ELSADISP.INI
- '' this can be used to check for incompatible updates, see NeedELSADisp()
- ELSAdisp$ = DESTWIN$ + "ELSADISP.INI"
-
- szNewVer$ = GetSectionKeyVersion(DRIVERKEY,"VERCHECK")
- CreateIniKeyValue ELSAdisp$, DRIVERKEY, "Version", szNewVer$, cmoOverwrite
- CreateIniKeyValue ELSAdisp$, DRIVERKEY, "FullName", DRIVERNAME, cmoOverwrite
-
- uses$ = ""
- FOR i%=1 TO GetListLength("USES") STEP 1
- Component$ = GetListItem( "USES", i% )
- uses$ = uses$ + "," + Component$
- szNewVer$ = GetSectionKeyVersion(Component$,"VERCHECK")
- CreateIniKeyValue ELSAdisp$, Component$, "Version", szNewVer$, cmoOverwrite
- usedby$ = GetIniKeyString( ELSAdisp$, Component$, "UsedBy" )
- IF usedby$ = "" THEN
- usedby$ = DRIVERKEY
- ELSEIF INSTR( usedby$, DRIVERKEY ) = 0 THEN
- usedby$ = usedby$ + "," + DRIVERKEY
- END IF
- CreateIniKeyValue ELSAdisp$, Component$, "UsedBy", usedby$, cmoOverwrite
- NEXT i%
- CreateIniKeyValue ELSAdisp$, DRIVERKEY, "Uses", MID$(uses$,2), cmoOverwrite
-
- END SUB
-
-
- '**
- '** Purpose:
- '** Appends a file name to the end of a directory path,
- '** inserting a backslash character as needed.
- '** Arguments:
- '** szDir$ - full directory path (with optional ending "\")
- '** szFile$ - filename to append to directory
- '** Returns:
- '** Resulting fully qualified path name.
- '*************************************************************************
- FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
- IF szDir$ = "" THEN
- MakePath = szFile$
- ELSEIF szFile$ = "" THEN
- MakePath = szDir$
- ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
- MakePath = szDir$ + szFile$
- ELSE
- MakePath = szDir$ + "\" + szFile$
- END IF
- END FUNCTION
-
-
- '**
- '** Purpose:
- '** checks whether win95 is running or not
- '** Returns:
- '** 1: win95 is running
- '** 0: else
- '*************************************************************************
- FUNCTION OnWindows95() STATIC AS INTEGER
- IF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion = 95 THEN
- OnWindows95 = 1
- ELSE
- OnWindows95 = 0
- END IF
- END FUNCTION
-